<?php
class notify 
{
    // Put your device token here (without spaces):
    public $_deviceToken = 'bc2bc095c65f336cd3dc20ba2e8a5bcb91ea3f6136bcadb3c0bf003ab9a004bd';

    // Put your private key's passphrase here:
    private $_passphrase = '123';

    public function send($message=null)
    {
        // Put your alert message here:
        //$message = 'My first push notification!';
        if(!empty($message)) {
            $ctx = stream_context_create();
            stream_context_set_option($ctx, 'ssl', 'local_cert', 'pushcert.pem');
            stream_context_set_option($ctx, 'ssl', 'passphrase', $this->_passphrase);

            // Open a connection to the APNS server
            $fp = stream_socket_client(
                'ssl://gateway.sandbox.push.apple.com:2195', $err,
                $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);

            if (!$fp) {
                exit("Failed to connect: $err $errstr" . PHP_EOL);
            }

            //Connected to APNS' . PHP_EOL;
            // Create the payload body
            $body['aps'] = array(
                'alert' => $message,
                'sound' => 'default'
                );

            // Encode the payload as JSON
            $payload = json_encode($body);

            // Build the binary notification
            $msg = chr(0) . pack('n', 32) . pack('H*', $this->_deviceToken) . pack('n', strlen($payload)) . $payload;

            // Send it to the server
            $result = fwrite($fp, $msg, strlen($msg));
            
            // Close the connection to the server
            fclose($fp);
            
            if (!$result) {
                return false;
            } 
            
            return true;
        }
        
        return false;
    }
}
